#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/msg.h>
#include <stdio.h>
#include "cJSON.h"
#include <stdlib.h>
#include <string.h>

//表示消息队列的基本信息
struct msgbuf
{
    long mtype;
    char mtext[1024];
};


int main()
{   
    //创建消息队列（1）
    int msgid;
    msgid = msgget(0x001 , IPC_CREAT|0666);
    if(msgid < 0)
    {
    perror("msget");
    return -1;
    }
    printf("消息队列获取成功\n");


    //接受消息队列（2）
    int ret;
    struct msgbuf pp;
    ret = msgrcv(msgid , &pp, sizeof(pp.mtext),0,0);
    if(ret < 0)
    {
	perror("msgsnd");
	return -1;
    }
    pp.mtext[ret] = '\0';
    printf("消息接受成功\n");

    cJSON *root = cJSON_Parse(pp.mtext);

    cJSON *led_1 = cJSON_GetObjectItem(root , "led_1");
    printf("led_1: %d\n" ,  led_1->valueint);

    cJSON *led_2 = cJSON_GetObjectItem(root , "led_2");
    printf("led_2:%d\n" , led_2->valueint);

    cJSON *buz = cJSON_GetObjectItem(root , "buz");
    printf("buz:%d\n" , buz->valueint);
    cJSON_Delete(root);

  // 销毁消息队列
    if (msgctl(msgid, IPC_RMID, NULL) < 0) {
        perror("msgctl");
        return -1;
    }
    printf("消息队列已销毁\n");

    return 0;
}
